package com.wh.wisdomsite.xbox.common.error;

import java.util.EnumMap;


/**
 * 自定义子错误类型
 * @Package com.wh.wisdomsite.xbox.common.error
 * @author 谢泽鹏
 * @date 2014年10月8日 下午4:02:14
 * @Copyright 个人版权所有
 * @Company 贵州万华科技有限公司Copyright (c) 2014
 * @version V1.0
 */
public enum SubErrorType {

    //服务不可用(未激活)
    ISP_SERVICE_UNAVAILABLE,

    //服务请求服务超时
    ISP_SERVICE_TIMEOUT,

    //服务不存在
    ISV_NOT_EXIST,

    //服务业务参数丢失
    ISV_MISSING_PARAMETER,

    //服务业务参数失效
    ISV_INVALID_PARAMETE,

    //服务业务参数不匹配
    ISV_INVALID_PERMISSION,

    //业务参数不匹配
    ISV_PARAMETERS_MISMATCH;


    /**
     * 子错误和主错误的对应关系
     */
    private static final EnumMap<SubErrorType, String> ERROR_TYPE_CODE = new EnumMap<SubErrorType, String>(SubErrorType.class);


    static {

        //服务不可用(未激活)
        ERROR_TYPE_CODE.put(SubErrorType.ISP_SERVICE_UNAVAILABLE, "isp.xxx-service-unavailable");

        //服务请求服务超时
        ERROR_TYPE_CODE.put(SubErrorType.ISP_SERVICE_TIMEOUT, "isp.xxx-service-timeout");

        //服务不存在
        ERROR_TYPE_CODE.put(SubErrorType.ISV_NOT_EXIST, "isv.xxx-not-exist:invalid-yyy");

        //服务业务参数丢失
        ERROR_TYPE_CODE.put(SubErrorType.ISV_MISSING_PARAMETER, "isv.missing-parameter:xxx");

        //服务业务参数失效
        ERROR_TYPE_CODE.put(SubErrorType.ISV_INVALID_PARAMETE, "isv.invalid-paramete:xxx");

        //服务业务参数不匹配
        ERROR_TYPE_CODE.put(SubErrorType.ISV_PARAMETERS_MISMATCH, "isv.parameters-mismatch:xxx-and-yyy");

        //服务不允许(不可用)
        ERROR_TYPE_CODE.put(SubErrorType.ISV_INVALID_PERMISSION, "isv.invalid-permission");

    }


    /**
     * 获取错误
     * @return
     */
    public String value() {
        return ERROR_TYPE_CODE.get(this);
    }
}
